Implemented:
 5777	Cover/Reveal rectangular FOW area
 5778	Actions.AIEquipRate(aPlayer: Byte; aType: Byte; aRate: Word)
 5871	Event OnHousePlanPlaced(aPlayer: Byte; aX, aY: Word; aType: Byte)
 5882	Event OnHouseDamaged(aHouse, aAttacker: Integer);
 5884	Event OnUnitWounded(aUnit, aAttacker: Integer);
 5964	Events OnPlanRoad, OnPlanField, OnPlanWinefield (aPlayer, aX, aY: Integer)
 5924	Actions.AIAutoBuild(aPlayer: Byte, aAuto: Boolean)
 5924	Actions.AIAutoDefence(aPlayer: Byte; aAuto: Boolean)
 5924	Actions.AIRecruitsDelay(aPlayer: Byte, aDelay: Cardinal)
 5924	Actions.AISerfsFactor(aPlayer, aLimit: Byte)
 5924	Actions.AIWorkersLimit(aPlayer, aLimit: Byte)
 5927	States.PlayerIsAI(aPlayer: Byte): Boolean
 5927	Actions.RemoveRoad(X, Y: Word)
 5932	Actions.AIAutoRepair(aPlayer: Byte; aAuto: Boolean)
 5932	Actions.AISoldiersLimit(aPlayer: Byte; aLimit: Integer)
 5932	Actions.AIDefensePositionAdd(aPlayer: Byte; X: Integer; Y: Integer; aDir: Byte; aGroupType: Byte; aRadius: Word; aDefType: Byte) 
 5932	States.GroupType(aGroupID: Integer) - returns type of certain group (melee, ranged...)
 5934	States.HouseCanReachResources(aHouseID: Integer): Boolean
 5934	Actions.AIGroupsFormationSet(aPlayer, aType: Byte; aCount, aColumns: Word)
 5934	Actions.GroupHungerSet(aGroupID, aHungerLevel: Integer)
 5934	Actions.GroupKillAll(aGroupID: Integer; aSilent: Boolean)
 5934	Actions.UnitBlock(aPlayer: Byte; aType: Word; aBlock: Boolean)
 5938	Actions.CinematicStart(aPlayer: Byte);
 5938	Actions.CinematicEnd(aPlayer: Byte);
 5938	Actions.CinematicPanTo(aPlayer: Byte; X, Y, Duration: Word);
 5943	States.ClosestGroup(aPlayer, X, Y: Integer): Integer
 5943	States.ClosestHouse(aPlayer, X, Y: Integer): Integer
 5943	States.ClosestUnit(aPlayer, X, Y: Integer): Integer
 5943	States.HouseOccupant(aHouseID: Integer): Integer
 5964	OnPlanRoad, OnPlanField, OnPlanWinefield
 5976	Actions.GroupDisableHungryMessage
 5978	UnitKill now works for animals
 6015	Actions.HouseTakeWaresFrom
 6067	Actions.Log
 6114	OnHouseAfterDestroyed, OnUnitAfterDied
 6126	Actions.HouseBarracksGiveRecruit
 6216	OnMarketTrade
 6216	Actions.MarketTradeSet
 6216	States.MarketValue
 6217	States.MarketLossFactor
 6216	States.ClosestHouseMultipleTypes
 6216	States.ClosestUnitMultipleTypes
 6216	States.ClosestGroupMultipleTypes
 6220	Allow high volume boost for positional script sounds since they are much quieter than non-positional sounds
 6220	Actions.PlayWAVFadeMusic
 6220	States.HouseUnlocked
 6220	OnGroupHungry
 6222	Actions.PlayWAVLooped
 6222	Actions.PlayWAVAtLocationLooped
 6222	Actions.StopLoopedWAV
 6251	More options for AI: Actions.AIDefendAllies, Actions.AIAutoAttackRange, Actions.AIStartPosition
 6277   Actions.GroupBlockOrders
 6284   States.HouseTypeMaxHealth
 6285   States.HouseBuildingProgress
 6287	HouseMarketFromWare, HouseMarketToWare, HouseMarketOrderAmount (query what the player has ordered at a market)
 6288   Actions.GiveHouseSite
 6297   Actions.HouseAddBuildingProgress
 6298   OnHousePlanRemoved
 6301   OnPlanRoadFieldWinefieldRemoved; OnPlanRoadWineField ---> OnPlanRoadWineFieldPlaced
 6303 	Actions.PlanConnectRoad(aPlayer, X1, Y1, X2, Y2): Boolean - Connects road plans between two points (similar to AI builder)
 6309	Actions.RemDefensePosition(PlayerID, X, Y)
 6311 	Actions.GiveRoad(aPlayer, X, Y: integer); - add finished road
 6311	Actions.GiveWinefield(aPlayer, X, Y: integer); - add finished winefield
 6311	Actions.GiveField(aPlayer, X, Y: integer); - add finished field
 6313	Allow to query count of placed house plans
 6323   Actions.AIDefencePositionRemoveAll(aPlayer)
 6323   States.StatAIDefencePositionsCount(aPlayer)
 6328   MultipleTypes for StatHouseTypeCount, StatUnitTypeCount
 6331   MultipleTypes for killed, lost units and produced wares
 6338   Split a specific warrior out of a group
 6510   Actions.HouseAddBuildingMaterials
 6510   PlanConnectRoad can add completed road
 6510	States.HouseSiteIsDigged
 6516   States.HouseBarracksRallyPointX/Y
 6523   States.UnitIdle/GroupIdle
 6570	OnBeacon(Player, X, Y)
 6587	OnUnitAttacked
 6587	States.MapTileType, States.MapTileRotation, States.MapTileHeight, States.MapTileObject
 6587	Actions.MapTileSet, Actions.MapTileHeightSet, Actions.MapTileObjectSet
 6600	CampaignData for storing data between campaign missions
 6602	States.ConnectedByRoad(X1, Y1, X2, Y2): Boolean
 6602	States.ConnectedByWalking(X1, Y1, X2, Y2): Boolean
 6611	States.LocationCount: Integer
 6613	States.MapWidth: Integer
 6613	States.MapHeight: Integer
 6714g	Actions.PlayerShareBeacons(aPlayer1, aPlayer2: Word; aCompliment, aShare: Boolean)
 6714g	Actions.PlayerShareFog(aPlayer1, aPlayer2: Word; aCompliment, aShare: Boolean)
 6722g	States.UnitHPCurrent(aUnitID: Integer): Integer
 6722g	States.UnitHPMax(aUnitID: Integer): Integer
 6722g	States.UnitHPInvulnerable(aUnitID: Integer): Boolean
 6722g	Actions.UnitHPChange(aUnitID, aHP: Integer)
 6722g	Actions.UnitHPSetInvulnerable(aUnitID: Integer; aUnlimited: Boolean)
 6729g	States.MapTilePassability(X, Y: Integer; aPassability: Byte): Boolean

Accepted:
	OnGroupOrderAttackHouse(aGroup, aHouse: integer)
	OnGroupOrderAttackUnit(aGroup, aUnit: integer)
	OnGroupOrderLink(aOldGroup, aNewGroup: integer)
	Change house/unit/group owner
	DisplayText(text, player_id, timeout) to show announcements that will be gone after timeout (for TD and etc.)	
	Way to highlight menu buttons (4 main tabs, build buttons), houses, units, etc. for the tutorial?
	Overlay should have sensible default word wrap length (512px?)


Proposed:
	Render sprite onto map (from provided RXX file)
	Render sprite overlaid on the screen like TKMImage (from provided RXX file)
	Change which player MySpectator is viewing/controlling
	Block player from moving the viewport or selecting anything (cutscene mode)
	Select unit/house/group in the player's UI
	DelayedExecution(delay, function, params)
	Forbidden areas where players can't move their troops
	Way to remove recruits directly from barracks
	States.HousePlanAt(X, Y) - returns aPlanID.
	More options for on-screen text (background color, alignment, font, size, etc.)
	HousePlanType(aPlanID), returns the type of the house plan.
	States.GroupAtDefPos(PlayerID, PositionID)
	Add flag to allow to kill units with death animation, but without sound
	Actions.AI_enable(PlayerID; Enable:Boolean); //Auto-feed, etc
	Actions.AI_startAttack(PlayerID, TargetX, TargetY, ArmyCount, MeleeGroups, AntihorseGroups, RangedGroups, MountedGroups); 
	States.AI_closestEnemyUnit(PlayerID):Integer; 
	States.AI_closestEnemyHouse(PlayerID):Integer 
	States.Path_getLength(fromX, fromY, toX, toY):Integer; 
	States.Path_closestUnit(X, Y):Integer; 
	States.Path_closestHouse(X, Y):Integer;
	Actions.GroupOrderAttackGroup(AttackersGroupID, GroupToAttackID: Integer)
	OnConsoleInput event
	Actions.TimerStart(aTimerID, aTimeout: Integer); Events.OnTimer(aTimerID: Integer);
	Change player color (changing colors during the game sounds like inconsistency)
	Actions.PlaceBeacon(aPlayer, X, Y: integer; aMinimapOnly: Boolean) - Needs to not be confused with beacons from other players
	States.PlayerHasQuit / Event OnPlayerQuit - Currently not possible, player quitting would need to go through GIP for net/replays
	OnWareAdd(houseId, wareType)
	OnWareTake(houseId, wareType)
	PlayerGetAllHouseMultipleTypes(playerID, array of byte[] (house types) returns array of id of buildings
	PlayerGetAllUnitsMultipleTypes(playerID, array of byte[] (unit types) returns array of id of units
	GetAllTeams - return array of teams in multiplayer
	PlayerTeam(playerId) - return id of team of specified player


Rejected:	
	Actions.SetAIName (Player names can be written in libx, changing names during the game sounds like inconsistency)
 	HouseAddWaresTo can add construction wares (use GiveHouseSite with aAddMaterials = True key)
        OnPeaceTimeEnd (use States.GameTime = States.PeaceTime instead)
        States.DefencePositionAt(X,Y): Integer, returns PosID
        States.DefencePositionOwner(aPos)
        States.DefencePositionGroupType(aPos)
        States.DefencePositionIsFront(aPos)
